/*
*   Copyright: Fabian Hajek (2012)  Programmieren: C   -   Semesterarbeit WS 2011/2012
*
*   Projekt: Schreinerei.exe
*
*   Author: $Author: webmaster@die-schwarzen-schwaben.de $
*
*   Name: func_shop.c
*   URL:    $URL: http://semesterarbeit-wi-11-12.googlecode.com/svn/trunk/Semesterarbeit2/Schreinerei/Funktionen/func_shop.c $
*
*   Description:   Hier koennen Ressourcen gekauft werden
*
*   Last update:    $Date: 2012-02-24 21:43:11 +0000 (Fri, 24 Feb 2012) $
*
*   Rev:      $Rev: 55 $
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "func_shop.h"
#include "../default/structures.h"
#include "../Definitionen/define.h"

char shop(void)
{
    char z;
    printf("\nBitte Ressource ausw\x84hlen:\n");
    HEADLINE
    printf("\n%-34s | %15s |%24s\n","Ressource", "Kosten/Einheit","Aktuelle Lagerbest\x84nde");
    HEADLINE
    struct ressource *p_ressource_start = p_ressource_end;
    char i=0;
    while(p_ressource_start)
    {
        i++;
        p_ressource_ar[i] = p_ressource_start;
        printf("%i. %-32s   %8.2f /",i,p_ressource_start->name,p_ressource_start->price);
        ENTITY(p_ressource_start->entity)
        printf(" %24i\n",p_ressource_start->stock);
        p_ressource_start = p_ressource_start->prev_ressource;
        HEADLINE
    }
    printf("\nRessource-Nr: ");
    unsigned int input = 0;
    scanf("%i",&input);
    fflush(stdin);
    if(input>i || input==0)
    {
        /*Auswahl fehlerhaft*/
        printf("Bitte g\x81ltige Ressource angeben:\n");
        z = 1;
    }
    else
    {
        /*Auswahl vorhanden*/
        unsigned int quantity;
        printf("\nIhre Auswahl: %s\n\n",p_ressource_ar[input]->name);
        printf("Wieviele Einheiten m\x94\chten Sie kaufen? ");

        /*Umschreiben der Variable input*/
        int e_input = input;

        scanf("%i",&quantity);
        fflush(stdin);

        /*Ist Eingabe korrekt?*/
        char r = (quantity>0)?0:1;
        while(r)
        {
            printf("Wert muss \x81 \bber 0 liegen: ");
            scanf("%i",&quantity);
            fflush(stdin);
            r = (quantity>0)?0:1;
        }

        //Falls Einheit nicht m oder M => geteilt durch Einheit, um Stueckpreis zu erlangen.
        float price;
        if(p_ressource_ar[e_input]->entity!='M' && p_ressource_ar[e_input]->entity!='m')
        {
            price = quantity*p_ressource_ar[e_input]->price/p_ressource_ar[e_input]->entity;
        }
        else
        {
            price = quantity*p_ressource_ar[e_input]->price;
        }

        printf("\nFolgende Kosten entstehen:\n\n");
        printf("Anzahl  |  Beschreibung  |  Kosten/Einheit\n");
        printf("------------------------------------------\n");
        printf("%6d   %16s   %.2f\n",quantity,p_ressource_ar[e_input]->name,p_ressource_ar[e_input]->price);
        printf("------------------------------------------\n");
        printf("%-34s %.2f\n","GESAMT",price);
        printf("------------------------------------------\n");
        printf("------------------------------------------\n");

        printf("\nDurch Best\x84tigen (y) wird der Betrag von %.2f Euro von ihrem Kapital abgezogen und die Ressourcen ihnen gutgeschrieben. Zum Abbrechen bitte \"n\" eingeben: ",price);

        /*quantity uebernehmen*/
        unsigned int e_quantity = quantity;

        char confirm[1];
        scanf("%s",confirm);
        fflush(stdin);

        r = (confirm[0]=='y' || confirm[0]=='n')?0:1;

        while(r)
        {
            printf("\nBitte g\x81ltigen Wert eingeben (y/n): ");
            scanf("%s",confirm);
            fflush(stdin);
            r = (confirm[0]=='y' || confirm[0]=='n')?0:1;
        }

        if(confirm[0]=='y')
        {
            /*Auf genuegend Kapital ueberpruefen*/
            if(kapital>=price)
            {
                kapital = kapital-price;
                /*Suche Struktur mit ausgewaehlter Ressource*/
                p_ressource_start = p_ressource_end;
                while(p_ressource_start)
                {
                    /*Abgleich*/
                    if(p_ressource_start->name == p_ressource_ar[e_input]->name)
                    {
                        p_ressource_start->stock = (p_ressource_start->stock)+e_quantity;
                        break;
                    }
                    p_ressource_start = p_ressource_start->prev_ressource;
                }

                printf("\nIhr neuer Lagerbestand (%s) wei\xE1t ein Plus von %d auf.\nIhr neuer Kontostand betr\x84gt: %.2f Euro\n",p_ressource_start->name,p_ressource_start->stock,kapital);
                log("\nFolgende Ressource wurde eingekauft:",0,1);
                log(p_ressource_start->name,0,1);
            }
            else
            {
                printf("\nIhr Kapital reicht leider nicht aus. Ihr derzeitiges Kapital: %.2f Euro\nDer Vorgang wurde abgebrochen.\n",kapital);
            }

        }
        else
        {
            printf("\nSie haben den Einkauf abgebrochen.\n");
        }

        z = 0;
    }
    return z;
}
